using System;
using System.Data;
using System.Configuration;

namespace ServicioRFIDMovil.DataAccess
{
    /// <summary>
    /// <para>Clase       : DataBaseHelper</para>
    /// <para>Descripcion : Permite obtener el proveedor y cadena de conexion a la base de datos</para>
    /// <para>Autor       : Pedro Miguel Vera Rafael</para>
    /// <para>Fecha       : 15/06/2011</para>
    /// <para>Empresa     : GS1 Peru</para>
    /// </summary>
    public static class DataBaseHelper
    {
        #region --- Enumeradores y Constantes ---
        public enum TipoProveedor
        {
            SQLSERVER = 0,
            ORACLE = 1
        }

        private const string PROVEEDOR_SQLSERVER = "SQL";
        private const string PROVEEDOR_ORACLE = "ORACLE";

        private const string CODIGO_EMPRESA = "";
        private const string CODIGO_SISTEMA = "QS5";
        private const string CODIGO_MODULO = "QS51";

        private const string ESQUEMA = ""; //"QS5.";
        private const string FORMATO_ESQUEMA_PROCEDIMIENTO = "{0}{1}";
        #endregion

        #region --- Metodos Propios ---
        public static string obtenerDbProveedor(string nombreConexion)
        {
            return ConfigurationManager.ConnectionStrings[nombreConexion].ProviderName;
        }

        public static string obtenerDbCadenaConexion(string nombreConexion)
        {
            return ConfigurationManager.ConnectionStrings[nombreConexion].ConnectionString;
        }

        public static string obtenerCodigoEmpresa()
        {
            return CODIGO_EMPRESA;
        }

        public static string obtenerCodigoSistema()
        {
            return CODIGO_SISTEMA;
        }

        public static string obtenerCodigoModulo()
        {
            return CODIGO_MODULO;
        }

        public static TipoProveedor obtenerDbTipoProveedor(string nombreConexion)
        {
            TipoProveedor tipoProveedor = TipoProveedor.SQLSERVER;
            string proveedor = ConfigurationManager.ConnectionStrings[nombreConexion].ProviderName.ToUpper();

            if (proveedor.IndexOf(PROVEEDOR_SQLSERVER) > 0)
            {
                tipoProveedor = TipoProveedor.SQLSERVER;
            }
            else if (proveedor.IndexOf(PROVEEDOR_ORACLE) > 0)
            {
                tipoProveedor = TipoProveedor.ORACLE;
            }

            return tipoProveedor;
        }

        public static string obtenerNombreProcedimiento(string nombreProcedimiento)
        {
            return string.Format(FORMATO_ESQUEMA_PROCEDIMIENTO, ESQUEMA, 
                                                                nombreProcedimiento);
        }
        #endregion
    }

    /// <summary>
    /// <para>Clase       : ConstantesDAO</para>
    /// <para>Descripcion : Permite definir los nombres de las interfaces para DAO</para>
    /// <para>Autor       : Pedro Miguel Vera Rafael</para>
    /// <para>Fecha       : 15/06/2011</para>
    /// <para>Empresa     : GS1 Peru</para>
    /// </summary>
    public static class ConstantesDAO
    {
        /// <summary>
        /// Nombre de la interface para acceder a fuentes de datos 
        /// </summary>
        public enum NombreInterface
        {
            ConexTvperu = 0,
        }
    }
}
